React Aria
React Aria
sandbox環境
GitHub - ryokatsuse/sandbox-react-aria: react-ariaを色々いじるsandbox環境
ガイド
スタイル
CSS Modules、TailWindCSSやCSS in JSなどが使える
各コンポーネントにはreact-aria-ComponentNameの名前でスタイルがついている
上書きできる
データ属性が適用されており、振る舞いに応じたCSSが適用できる
Render props
code:ts
<ListBoxItem
className={({ isSelected }) => isSelected ? 'selected' : 'unselected'}
Item
</ListBoxItem>
こんな感じで状態に応じたclassを渡せる
slot
一部のコンポーネントでは同じコンポーネント
TailWindCSSの場合
tailwindcss-react-aria-componentsプラグインで記述名を短く書けるみたい
フォーム
通常の組み込みコンポーネントも利用できるが、React Hook Formといっしょに使うことも可能
通常の組み込みコンポーネントにバリデーション機能もあるがzodなども使える
コレクション
レイアウトだったり動的なコンポーネントなどを提供している
Collections – React Aria
これなるほどと思ったrkasu.icon
リストをレンダリングするときにkeyとitemを使うからパフォーマンスがあまり良くない
code:ts
// good code
let animals, setAnimals = useState([
{name: 'Aardvark'},
{name: 'Kangaroo'},
{name: 'Snake'}
]);
<ListBox items={animals}>
{item => <ListBoxItem id={item.name}>{item.name}</ListBoxItem>}
</ListBox>
// bad code
let animals, setAnimals = useState([
{name: 'Aardvark'},
{name: 'Kangaroo'},
{name: 'Snake'}
]);
<ListBox>
{animals.map(item =>
<ListBoxItem key={item.name} id={item.name}>{item.name}</ListBoxItem>
)}
</ListBox>
仮想スクロールのコレクションやfetchするためのコレクションもある
Virtualizer – React Aria
これ強い
Mensonlyレイアウトもできるっぽい
Selection
単一な選択も動的な選択もサポートしている
そして⌘ Cmdで全選択も対応している
クライアントでルーティングする場合は、プロバイダーが提供されているのでそれで可能
コンポーネント
React Aria Button
React Aria FileTrigger
めちゃくちゃ参考になるやつ
React Ariaの実装読むぞ - Qiita Advent Calendar 2024 - Qiita